package com.ayz.gateway.common.notify;

/**
 * 容器上下文事件的多播器
 * 其实现子类可以管理多个具体的监听器 listener
 * 在事件发布的时候遍历所有的 listener 去发布事件
 * listener 监听器内部通过 if-else 来判断当前事件是否是当前监听器需要处理的
 * 如果是  则处理事件
 * 如果不是 跳过
 */
public interface ApplicationEventMulticaster {
    //向容器事件多播器当中注册监听器
    void addApplicationListener(ApplicationListener<?> listener);

    //向多播器当中移除相应 监听器
    void removeApplicationListener(ApplicationListener<?> listener);

    //发布事件
    void multicastEvent(ApplicationEvent event);

    void multicastEvent(ApplicationEvent event, Class<?> eventType);
    //清空当前多播器下所有的监听器
    void removeAllListener();
}
